<html>
    <link rel="stylesheet" type="text/css" href="javascript/resources/css/ext-all.css"> </link>
    <script src="javascript/adapter/ext/ext-base.js" type="text/javascript" charset="utf-8"></script>
    <script src="javascript/ext-all.js" type="text/javascript" charset="utf-8"></script>
    <body>
        <script type="text/javascript">
            Ext.ns('com.profesor');
            com.profesor.Form1 = {
                init: function(){
                    var indexEvaluacion = null;
                    var index1 = null;
                    function onRowClick(grid,rowIndex,e){
                        if(grid1.getSelectionModel().getCount() > 0){
                            index1 = grid1.getStore().getAt(rowIndex).get('idSeccion');
                        }
                    };


                    //<-- COMBOs -->
                    function onCicloBeforeSelect(combo, record, index){
                        var ciclo = record.get('idCiclo');
                        grid1.getStore().removeAll();
                        grid2.getStore().removeAll();
                        grid1.getStore().load({
                            params : {
                                idCiclo: ciclo
                            }
                        });
                    }

                    var ciclo=new Ext.form.ComboBox({
                        fieldLabel:'Ciclo',
                        name:'ciclo',
                        forceSelection:true,
                        emptyText:'Seleccione ciclo...',
                        triggerAction: 'all',
                        editable:false,
                        mode: 'local',
                        displayField:'nombreCiclo',
                        valueField: 'idCiclo',
                        store :new Ext.data.JsonStore({
                            url:'ProfesorServlet?action=getCiclos',
                            root: 'data',
                            totalProperty: 'total',
                            fields: [
                                {name:'idCiclo', type: 'int'},
                                {name:'nombreCiclo', type: 'string'}
                            ]
                        }),
                        listeners:{
                            beforeselect :function (combo,record,index1){
                                onCicloBeforeSelect(combo, record, index1);
                            }
                        }
                    });
                    ciclo.getStore().load({params:{x:'x'}});




                    function onEvaluacionBeforeSelect(combo, record, index){
                        var evaluacion = record.get('idTipoEvaluacion');
                        indexEvaluacion = evaluacion;
                        if (index1>0){
                            grid2.getStore().removeAll();
                            grid2.getStore().load({
                                params : {
                                    idSeccion: index1,
                                    idEvaluacion: evaluacion
                                }
                            });
                        }else{
                            alert('Seleccione un curso');
                        }
                    }

                    var evaluacion=new Ext.form.ComboBox({
                        fieldLabel:'Evaluacion',
                        name:'evaluacion',
                        forceSelection:true,
                        emptyText:'Seleccione evaluacion...',
                        triggerAction: 'all',
                        editable:false,
                        mode: 'local',
                        displayField:'nombreTipoEvaluacion',
                        valueField: 'idTipoEvaluacion',
                        store :new Ext.data.JsonStore({
                            url:'ProfesorServlet?action=getTipoEvalLista',
                            root: 'data',
                            totalProperty: 'total',
                            fields: [
                                {name:'idTipoEvaluacion', type: 'int'},
                                {name:'nombreTipoEvaluacion', type: 'string'}
                            ]
                        }),
                        listeners:{
                            beforeselect :function (combo,record,index){
                                onEvaluacionBeforeSelect(combo, record, index);
                            }
                        }
                    });
                    evaluacion.getStore().load({params:{x:'x'}});




                    //<-- GRILLA 1 -->
                   


                    var dataRecord = new Ext.data.Record.create([
                        {name:'idSeccion', type:'int'},
                        {name:'curso.codigoCurso', type:'string'},
                        {name:'curso.nombreCurso', type: 'string'},
                        {name:'codigoSeccion', type: 'string'},
                    ]);

                    var dataReader = new Ext.data.JsonReader({
                        root: 'data'
                    },
                    dataRecord
                );

                    var dataProxy = new Ext.data.HttpProxy({
                        url:'ProfesorServlet?action=getProgramaProfeCiclo',
                        method: 'POST'
                    });


                    var store = new Ext.data.GroupingStore({
                        proxy: dataProxy,
                        reader: dataReader
                    });

                    var grid1 = new Ext.grid.GridPanel({
                        name:'grilla1',
                        id:'grilla1',
                        width:500,
                        height:200,
                        store:store,
                        border:false,
                        columns: [
                            new Ext.grid.CheckboxSelectionModel({singleSelect : true}),
                            {id:'idSeccion',dataIndex:'idSeccion', hidden:true},
                            {header: 'Codigo',width: 75,dataIndex: 'curso.codigoCurso'},
                            {header: 'Curso.',width:250,dataIndex: 'curso.nombreCurso'},
                            {header: 'Seccion', width: 50,dataIndex: 'codigoSeccion'},
                        ],
                        stripeRows: true,
                        listeners:{
                            rowclick:function(grid,rowIndex,e){
                                onRowClick(grid,rowIndex,e);
                            }
                        }
                    });

                    var toolbar1= new Ext.Toolbar({
                        items: [
                            {
                                xtype : 'tbspacer',
                                width : 10
                            },
                            ciclo
                        ]
                    });




                    //<-- GRILLA 2 -->

                   //<-- METODOS GRILLA 2 -->
                    var index2 = null;
                    function onRowClick2(grid,rowIndex,e){
                        if(grid1.getSelectionModel().getCount() > 0){
                            index2 = rowIndex;
                        }
                    };

                    function reloadGrid(){
                        if (index1>0){
                            grid2.getStore().removeAll();
                            grid2.getStore().load({
                                params : {
                                    idSeccion: index1,
                                    idEvaluacion: indexEvaluacion
                                }
                            });
                        }
                    }

                    function grabar(){
                        var modified = grid2.getStore().getRange(0,grid2.getStore().getTotalCount());
                        var recordsToSend = [];
                        Ext.each(modified, function(record) {
                            recordsToSend.push(Ext.apply({id:record.id},record.data));
                        });
                        recordsToSend = Ext.encode(recordsToSend);
                      
                        Ext.Ajax.request({
                            url: 'ProfesorServlet?action=saveNotaAlumnos',
                            method: 'POST',
                            params: {
                                alumnos : recordsToSend
                            },
                            success: function (action,options){
                                var data=Ext.util.JSON.decode(action.responseText);
                                Ext.MessageBox.alert('Mensaje',data.message);
                                reloadGrid();
                            }
                        });
                    }

                 


                    var dataRecord2 = new Ext.data.Record.create([
                        {name:'alumno.idAlumno', type:'int'},
                        {name:'tipoEvaluacion.idTipoEvaluacion', type:'int'},
                        {name:'seccion.idSeccion', type:'int'},
                        {name:'detalle.idDetalle', type:'int'},
                        {name:'alumno.codigoAlumno',type:'string'},
                        {name:'alumno.nombreAlumno',type:'string'},
                        {name:'notaCurso.nota', type:'float'},
                        {name:'notaCurso.peso', type:'float'},
                        {name:'notaFinal', type:'float'}
                    ]);

                    var dataReader2 = new Ext.data.JsonReader({
                            root: 'data'
                        },
                        dataRecord2
                    );

                    var dataProxy2 = new Ext.data.HttpProxy({
                        url:'ProfesorServlet?action=getAlumnosProfe',
                        method: 'POST'
                    });


                    var store2 = new Ext.data.GroupingStore({
                        proxy: dataProxy2,
                        reader: dataReader2
                    });

                    var nota = new Ext.form.NumberField({
                        name:'nota',
                        id:'nota'
                    });

                    var grid2 = new Ext.grid.EditorGridPanel({
                        name:'grilla2',
                        id:'grilla2',
                        width:400,
                        height:200,
                        store:store2,
                        border:false,
                        columns: [
                            {id:'idAlumno',dataIndex:'alumno.idAlumno', hidden:true},
                            {header: 'Codigo',width: 75,dataIndex: 'alumno.codigoAlumno'},
                            {header: 'Alumno',width: 120,dataIndex: 'alumno.nombreAlumno'},
                            {header: 'Nota',width: 75,dataIndex: 'notaCurso.nota',editor:nota},
                            {header: 'Peso',width: 75,dataIndex: 'notaCurso.peso'},
                            {header: 'Nota Final',width: 75,dataIndex: 'notaFinal'}
                        ],
                        listeners:{
                            rowclick:function(grid,rowIndex,e){
                                onRowClick2(grid,rowIndex,e);
                            }
                        },
                        stripeRows: true,
                        buttonAlign: 'right',
                        buttons:[
                            {
                                text:'Grabar',
                                tooltip : 'grabar',
                                listeners : {
                                    click: function(){
                                        grabar();
                                    }
                                }
                            }
                        ]
                    });


                    var toolbar2= new Ext.Toolbar({
                        items: [
                            {
                                xtype : 'tbspacer',
                                width : 10
                            },
                            evaluacion
                        ]
                    });



                    //< -- PANELES -->

                    var panelgrid1 = new Ext.Panel({
                        title:'Curso',
                        width:500,
                        height:200,
                        //border:false,
                        renderTo:'grilla1',
                        items:[
                            toolbar1,
                            grid1
                        ]
                    });
                    var panelgrid2 = new Ext.Panel({
                        title:'Alumno',
                        width:500,
                        height:300,
                        //border:false,
                        renderTo:'grilla2',
                        items:[
                            toolbar2,
                            grid2
                        ]
                    });
                }
            }
            Ext.onReady(com.profesor.Form1.init,com.profesor.Form1);

        </script>



        <table>
            <tr>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td style="padding-left: 110px;"> <div id="grilla1"></div></td>
            </tr>
            <tr>
                <td> &nbsp; </td>
            </tr>
            <tr>
                <td style="padding-left: 110px;"> <div id="grilla2"></div></td>
            </tr>
        </table>

    </body>
</html>